Secure computing system

ABSTRACT

A computer system with multiple security levels, the system comprising a high-power processing device ( 130 ), a low-power processing device ( 110 ), and an interface unit ( 120 ) comprising functions for moving classified information between the high-power device ( 130 ) and the low-power device ( 110 ) according to formal rules for confidentiality and/or integrity. Additional security aspects, e.g. availability, may readily be accommodated. A method for implementing multiple levels of security along a number of independent security axes on the system is also disclosed.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent applicationSer. No. 15/707,936, filed Sep. 18, 2017 and entitled “Secure ComputingSystem,” now U.S. Pat. No. 10,162,975, which is a continuation of U.S.patent application Ser. No. 13/822,847, filed Jun. 19, 2013 and entitled“Secure Computing System,” now U.S. Pat. No. 9,767,297, which is anational stage application pursuant to 35 U.S.C. § 371 of InternationalApplication No. PCT/NO2011/000303, filed Oct. 25, 2011 and entitled“Secure Computer System,” which are hereby incorporated by referenceherein.

BACKGROUND 1. Field of the Invention

The present invention concerns a computer system with multiple securitylevels.

2. Background of the Invention

Personal computers are widespread, and commonly and increasingly used onthe Internet for banking, entertainment, social purposes etc. Theaverage user can not be expected to have a high level of technicalknowledge in general, or in the field of computer security inparticular. Hence, criminal activities such as fraud and theft arefacilitated by more or less protected personal computers. Currently,much attention is given to the actions of malicious software, malwarefor short, such as viruses, spyware etc., which may be used for takingcontrol over remote computers, keeping track of a user's actions inorder to obtain passwords and the like. Some malware, such as softwareused to track which websites the user visits in order to send targetedspam, may not be directly criminal. However, it may be a nuisance, andin some cases may slow down or even halt a computer. Hence, any kind ofmalware is undesired.

Today, antivirus software from a variety of vendors provides the maindefence against malware. Antivirus software typically scan software forsnippets of known virus code, and usually also provide filters to detectweb pages trying to trick a user into entering information such aspassword or a credit card number and pass on the information (phishing).Antivirus software may also use a number of other techniques in order todiscover, isolate and/or remove malware.

Many of the tools used for protecting personal computers are inadequatein that they are reactive, e.g. search for malware after the PC has beeninfected, they may perform post mortem analysis etc.

It is well known from e.g. the military, governmental and financialsectors that security must be built into the systems architecture fromthe start in order to obtain a truly robust and secure system, be it acomputer system, an organizational system or any other system. Themathematical foundation for such secure systems was formulated in the1970's primarily by Bell and LaPadula for confidentiality, and by Bibafor integrity. A brief overview of these models is useful in order toexplain the invention.

Brief Overview of Formal Security Models

Security is frequently defined as a combination of the security aspectsconfidentiality, integrity and availability. In this disclosure, theterm ‘security’ is defined in a similar manner. However, it is notedthat there may be several aspects of integrity, and that there may be noclear distinction between certain integrity and availability aspects. Itshould also be understood that all aspects of security herein areindependent of each other, i.e. that a security aspect that can beexpressed as a combination of other security aspects is not considered aseparate security aspect.

Confidentiality means that information should not be disclosed tosomeone not entitled to know it. In the Bell-LaPadula (BLP) model, aconfidentiality level is assigned to an information object such that ahigher level implies more confidentiality. A ‘subject’, e.g. a person orprocess, is given a clearance at a certain confidentiality level. Theinformation object may only be written to a subject having a clearanceat or above the confidentiality level of the information object. Inother words, ‘writing down’ to a less confidential level is notpermitted, whereas ‘writing up’ is allowed in the BLP model. Further, iftwo information objects with different confidentiality levels arecombined, e.g. present in one document, the combination is assigned thehigher of the two levels of confidentiality. While information may bewritten up, it cannot be written back to a lower level without violatingthe model. This also applies to a combination of information by thecombination rule. Thus, in order to avoid information from migrating tothe highest possible confidentiality level and having to treat a lot ofpublic information as if it was confidential, writing up should thusstill be kept at a minimum. The BLP model can be extended withcategories or compartments implementing the ‘need to know’ principle.For example, a company may decide not to grant access to salaries toevery employee with a clearance for CONFIDENTIAL, but only to those whoin addition belong to a certain category, e.g. SALARIES.

Integrity essentially concerns the trustworthiness or reliability ofinformation. Biba's strict integrity model, ‘the Biba model’ for short,is similar to the BLP model in that information is assigned a level ofintegrity and in that a subject is assigned a clearance. A high level ofintegrity is associated with reliable and trustworthy information and/orsubjects. However, unreliable information should not be allowed to mixwith reliable information at a higher integrity level, as theinformation at the higher level then would be no more reliable than theleast reliable information written to it. Hence, the Biba model differsfrom the Bell-LaPadula model in that writing up is forbidden, writingdown is allowed and in that a combination of information from two levelsof integrity is assigned the lower level. Like the Bell-LaPadula model,the Biba model can be extended with compartments, and although writingdown is allowed, it should be kept to a minimum in order to preventinformation from migrating to the lowest available integrity level.

Some security models combining integrity and confidentiality assume thata subject with access to confidential information, i.e. with a ‘highsecurity clearance’, automatically should have a ‘higher integritylevel’ than someone with a lower ‘security clearance’. This is aconfusion of terms. In this disclosure, integrity and confidentialityare regarded as completely independent of each other. This complies withcurrent theory, and means that information may be more or less reliableregardless of its level of confidentiality, and that a computer processmay be assigned clearance along a confidentiality axis regardless of itsassigned clearance along an integrity axis. Hence, a trusted processwith the highest available confidentiality level and lowest possibleintegrity level will be able to see or read all information in asecurity system, but it will not be permitted to write any informationto lower levels of confidentiality and/or higher levels of integrity. Onthe other hand, a process run on the lowest available confidentialitylevel and highest available integrity level will be able to writeinformation to every level of confidentiality and integrity, but it willnot be allowed to receive any information from other levels.

Information Security and Networking

In order to protect confidential information from being disclosed toun-authorized subjects, the information may be encrypted by somecryptographic algorithm using a key. Obviously, there is rarely a realneed for encrypting a cake recipe or other trivia to the same level astop secret military information. However, some systems, for example someso-called Virtual Private Networks, do encrypt all messages to the samelevel regardless of content. To keep the required system resources (andexpenses) at a reasonable level, such systems typically encrypt theinformation to a level appropriate for some medium level ofconfidentiality. Hence, information assigned a higher level ofconfidentiality is not permitted to enter such systems withoutadditional encryption. Still, system resources are wasted on encryptingpublic information, or on encrypting information that has already beenencrypted by a more advanced and demanding algorithm. The skilled personwill know that different levels of confidentiality can be assigneddifferent encryption algorithms and/or keys of different length in orderto encrypt information according to its level of confidentiality. Theskilled person will also know that the task of keeping confidentialitylevels apart may be more demanding than simply encrypting everything tosome medium level of confidentiality.

An important aspect of integrity is to ensure that information and thesubject accessing it are authentic. Thus, authentication is needed toensure that a user or process is the one he, she or it claims to be, forexample the user or process initiating a banking transaction from a bankaccount. In the financial industry, a token or RSA-generator plus apersonal password and/or other personal data may be required to identifya person properly before he or she is permitted access to a bankingapplication. Similarly, a certificate or the like may authenticate acomputer process.

One technique to prevent unauthorized alteration involves computing acryptographic checksum called a hash. For example, a hash can becomputed from a piece of software code and stored in a protected area.At runtime a new hash is computed and compared to the stored hash. Ifthe two hashes are different, the code is not allowed to run. Hashing isalso used to protect information from unauthorized alteration(tampering) in transit, e.g. to ensure that no one alters an accountnumber and/or amount in a banking application. The HTTP Secure protocol(https) implements authenticity in this manner, and is widely used forbanking applications and other transmissions over the Internet whereintegrity is important. It should be noted that while encryption mayensure some level of integrity in human based systems, it does notensure authenticity in a computer system. The reason is that a personreadily may recognize a decrypted altered message as garble. Then, if adecrypted message is readable, it probably has not been altered, and thesender may be assumed to be authenticated since he must have the properkey to encrypt the message. A computer process receiving a similardecrypted altered message cannot be expected to recognize the resultingcontent as garble. Consequently, no conclusion regarding tampering orsender should be made. In short, a hash may preserve integrity whileencryption does not preserve integrity. Likewise, encryption maypreserve confidentiality while a hash does not preserve confidentiality.

Current computer systems with functionality and architectures supportingthe Bell-LaPadula model include, but are not limited to, Solaris version10 and later, all current Linux distributions as well as secureproprietary systems used for military and governmental applications. Intransfer, confidential information may be encrypted with algorithms ofvarious complexity and keys of various lengths according to theconfidentiality level of the information in transfer: Current Linux andSolaris systems do have some functions for integrity, for example apassword system or a ‘smart card’ system for user authentication, theability to check a hash before running an application (authenticity) andfunctions for other integrity aspects. Some of the functions related tointegrity are implemented in hardware or kernel software, otherfunctions are implemented by third party application software.

Functions for the third security aspect, availability are typicallyimplemented by third party tools, e.g. application layer backup- orsystem recovery tools, or vendor specific disk-redundancy tools. We notethat so called flooding attacks sometimes are regarded as threatsagainst availability. They may equally well be regarded as unauthorizedwrites, and may as such be regarded as an integrity threat. Regardlessof the terms used, we note that rules similar to Bell-LaPadula's andBiba's can be employed along a number of axes, some of which may betermed an integrity aspect or an availability aspect, but still betreated according to either the BLP or the Biba rules described above.

At least some of the threat posed by malware may be attributed to lackof system support for formal security models. If, for example,confidentiality or integrity is enforced such that an external processis unable to write into a restricted area, then a virus could notcontaminate application software. Further, if a hash must be computed atruntime and required to be identical to an authenticated hash stored ina restricted area, then harmful code could automatically be preventedfrom running, in particular in restricted areas.

Thus, the effects of malware could be reduced or even eliminated if theformal security models were enforced.

However, a strict enforcement of security poses new problems. Oneexample is an integrity control where a user is required to add each andevery web page he or she visits to a list of ‘trusted’ pages.Considering the number of web pages visited by the average user, thisquickly causes the user to automatically add web pages to the list.After some time, the user may even disable this ‘security’ function toget rid of the perceived nuisance. It is readily seen that this kind ofintegrity control has little or no effect, and that the user cannot bedepended on to adequately assess integrity and/or confidentiality.

Another problem is cost. Today, even starting from a Solaris systemwhich implements many of the required functions and which has a lot ofverified code, developing and verifying even a relatively simple systemfor business use, can easily cost several millions of dollars. Startingfrom a Linux system, obtaining the necessary certification for the codeadds to the cost before a trusted system would be put into business use,let alone military or governmental applications.

An important reason for the high cost is the use of unorderedcompartments in the formal Bell-LaPadula and Biba models. Given a set ofN unordered ‘security compartments’, i.e. security related groups towhich a user or process can belong, a superset of 2^(N)−1 elements mustbe considered in a mathematically ordered and controllable set. Forexample, if a user can belong to groups A, B, and/or C, the superset of2³ elements a user can belong to is [O, {A}, {B}, {C}, {A, B}, {A, C},{B, C}, {A, B, C}]. Formally, a user must have the proper securityclearance AND belong to {A}, {A, B}, {A, C} or {A, B, C} in order toaccess information in compartment A. The empty set O, where a userbelongs to none of the groups A, B or C is usually excluded fromimplementation for obvious reasons. The ordered superset is considered asubset of each of L security levels. Thus, a secure system must considerL(2^(N)−1) ordered levels along an axis of security, e.g. theconfidentiality axis. In current systems, the number of possibleconfidentiality levels can be e.g. L=65536 or larger, and the number ofavailable compartments may also be, for example, N=65536 or larger. Thismay seem like large numbers, but a few tens of thousand compartments ina system with several hundred of thousand users may still be too small.In the present context, however, the number of available levels alongeach axis will typically be L=3 or less, and the number of compartmentsmay easily be reduced to a few or even 1 as explained below.

It should be understood that the various groups created in a typicaloperating system for personal computers may have different purposes, anddo not necessarily have formal security significance. For example, asubstantial number of the groups a user can belong to in a typical PCsystem will only contain public information with unknown reliability.Further, the rights assigned to processes in a PC system are many,various and can hardly be seen to constitute a formally complete set ofrights associated with formal security. Thus, the number of formalsecurity compartments is not large in a typical PC-environment ingeneral. In a secure environment running machines at different levels, avirtual machine's ‘need-to-know’ is expected to be limited, and hencethe number of security compartments is expected to be low, for example 1per virtual machine.

STATE OF THE ART

As mentioned above, some operating systems, for example current Linuxdistributions and some UNIX-based systems, include security functionsthat employ techniques implementing the formal security models. One suchtechnique is, as briefly mentioned above, to use a hashing algorithm toprovide and store a hash of software during installation, calculate anew hash at runtime and only permitting the software to run if theruntime hash is identical to the stored hash. Another technique is torun applications in a “compartment” or “sandpit” isolated from othersoftware running on the system. Running an entire operating environmenton a virtual machine provided by a hypervisor system may be viewed as avariety of the sandpit-technique. There are other techniques known tothose skilled in the art, all of which may be used with the presentinvention. In this disclosure, the term “operating environment” includesany operating system and/or hypervisor system capable of runningcomputer applications, including different operating systems and userinterfaces.

Known systems for implementing security in a low power system includethe use of a processor and certificates and/or keys embedded in aplastic card the size of a credit card. Such cards may be inserted intoa card reader connected to a computer. The card reader may be connectedthrough a systems bus or a peripheral bus like, e.g., a Universal SerialBus (USB). Such security cards have no internal power source, andelectric power is supplied from a running system through the cardreader. Further, the processing capability of such a card make itunsuitable for running computing intensive routines like, for example,hashing, encryption or booting a kernel in an operating environment.Usually, the card reader also depends on a driver supplied by a runningoperating environment. Hence, such card based systems are normally usedfor high-level security functions such as providing a certificate or keyfor verification, hashing and/or encryption in applications runningwithin the operating environment.

From a security perspective, such card systems are still prone tovarious threats against confidentiality, integrity and availability. Inparticular, malware may infect the operating system and/or applicationsduring startup (boot) or operation. Such malware might, at least intheory, steal the smartcard's keys or certificate, or mimic the driverto authorize something that would not be authorized by the smart card.This possibility renders the smart card unreliable from a formalintegrity point of view.

An objective of the present invention is to provide a system capable ofproviding security related functions and data without requiring arunning operating environment. In particular, the system may containhashes of installed software, for comparison before software, possiblyincluding kernel functions of an operating system, is allowed to run onthe system. The system may also contain keys and other data, and be ableto run security related routines without requiring external processingpower or a running operating system.

Another objective of the present invention is to provide a computersystem consistent with formal rules for confidentiality, integrity andavailability, which system does not depend on a user's discretion andwhich hamper a user's activities as little as possible.

SUMMARY OF THE INVENTION

According to the invention, this is achieved by providing a computersystem with multiple security levels, the system comprising a high-powerprocessing device, a low-power processing device, and an interface unitcomprising functions for moving classified information between thehigh-power device and the low-power device according to formal rules forconfidentiality and/or integrity.

In another aspect, the invention discloses a method for implementingmultiple levels of security on such a computer system.

The low-power device provide means for running software and keepingsecurity data at the highest possible integrity level to which no dataor foreign code can be written through normal software routines. This isensured by providing the secure data and code in firmware or hardwarethat can only be altered by a physical device for hardware programming.The low-power device may in some instances not even provide an interfacefor hardware programming.

The low-power device may also provide facilities at lower integritylevels, making it possible to write certain data to clearly definedareas of the device, using e.g. firmware implemented functions for readsand writes, taking the formal rules for integrity into consideration,i.e. writing up is prohibited while writing down is permitted.

Similar functionality may be implemented with regards to confidentialitylevels, where writing up is permitted and writing down is forbidden.

Some data within the highest integrity level can have a lowconfidentiality level, i.e. the availability for being read by everysoftware component in the high-power system, e.g. kernel functions ofvarious kinds. Other data within the highest integrity level, forexample some keys for encryption, may have a higher confidentialitylevels and thus can only be read from software running at an appropriateconfidentiality level and a lower integrity level.

BRIEF DESCRIPTION OF THE DRAWINGS

The invention will be explained in the following detailed descriptionwith reference to the accompanying drawings, in which like referencenumerals refer to similar elements throughout the figures, and in which:

FIG. 1 is a schematic view of a system according to the invention.

FIG. 2 illustrates functional components within the system of FIG. 1.

FIG. 3 illustrates a possible software architecture for use on thesystem.

DETAILED DESCRIPTION

FIG. 1 illustrates a computer system comprising an autonomous low-powerdevice 110, an interface unit 120, and a high power system 130.Peripheral devices 150, 151 are connected through a bus 400.

The high-power system 130 typically comprises the circuits and devicesfound in a typical computer capable of running operating environmentslike, for example, Linux, Mac-OS, Unix, VM-ware and/or MicrosoftWindows. It is noted that “high-power” refers loosely to the processingpower, and not the electrical power required for running the machine.Indeed, some computers capable of running a common operating environmentwith a suitable user interface are designed for use on batteries andthus have relatively small electrical power consumption. Such systemsare still included in the term “high power systems” 130 as used herein.

The autonomous low-power device 110 of the system in FIG. 1 is anauxiliary system capable of booting from hardware and/or firmware thatcannot be modified through the operating system on the high powerdevice, simply because there is no hardware for modifying them.

The hardware and/or firmware in the low-power device can preferably bewritten from a hardware programming interface only, and is typicallyimplemented solely in microelectronic chips, ASICS, Field ProgrammableGate Arrays (FPGAs) and similar devices. A typical implementation woulduse readily available programmable hardware like, for example, anARM-system. The main purpose of the low-power device in the presentcontext is to contain security related instructions and data in atamperproof manner. The instructions may include a secure microkerneland/or state machine/processor for booting the system to a known securestate, security related routines etc., including low level routines foruse by the high-power system. The security data can comprisecertificates, hashes and various keys.

In a security context, non-writable or read-only areas on the low powerdevice may be used for the highest integrity level in the system.Recalling the Biba model, this means that no data can be written to itfrom lower integrity levels, while every process running at lowerintegrity levels can read from it. This functionality is readilyimplemented by Read Only Memories (ROMs) and the like. The low-powerdevice may also provide storage or accommodate processes at lowerintegrity levels. This makes it possible to write certain data toclearly defined areas of the low-power device, using e.g. firmwareimplemented functions for reads and writes. With regards to integrity,Biba's rules, i.e. writings up are prohibited while writing down ispermitted, should be strictly enforced. Implementing them in higherlevel software is cumbersome.

Similar functionality may be implemented with regards to confidentialitylevels, where writing up is permitted and writing down is forbidden.Realizing that every level of confidentiality can read the lowestconfidentiality level, at least some global data can be stored in ROMsof different kinds in the low-power device. Such public data may includean operating kernel or system functions and global public data. Otherdata may still be provided by a ROM, and thus simply cannot be modifiedby software, and yet have a high confidentiality level and thus shouldnot be disclosed to any subject cleared for a lower confidentialitylevel. Such data include encryption keys, which would be useless ifevery process in the system could read them.

Some data within the highest integrity level can have a lowconfidentiality level, i.e. it can be read by every software componentin the high-power system, e.g. kernel functions of various kinds. Otherdata within the highest integrity level, for example some keys forencryption, may have a higher confidentiality level and thus can only beread from software running at an appropriate confidentiality level and alower integrity level.

The interface unit 200 provides an interface between the low-powersystem 100 and the high-power system 300. If, for example, a securemicrokernel is used to boot the low-power system to a known securestate, the interface unit 200 would be responsible for passing controlto an operating environment and/or hypervisor system running on the highpower system once the secure state is obtained. The interface may alsobe responsible for passing security related routines and/or data fromthe tamper proof low-power device to software running on the high-powersystem. In some embodiments, the interface unit 200 may even beresponsible for passing control from software running on the high-powersystem 300 to low level routines running on the low-power device 100.Such routines could be ‘tamperproof’ in the sense that they cannot bemodified without physical access to the low-power device in order toplug in an interface for HW-programming, as well as equipment forhardware programming.

In FIG. 1 the horizontal arrows illustrate that parts of the low-powerdevice 100 may communicate directly with parts in the high power system300 through the interface unit 200. The vertical arrows illustrate thatthe low-power device 100, the interface unit 200 and the high-powersystem 300 may communicate with each other and with the peripheral units500.501 through the bus 400. The bus 400 represents, for example, asystem bus of a kind normally used to connect the processors, RAM andother devices within a typical computer, and also serial buses like USB.The schematic peripherals 500 and 501 represent all known peripheralsused in a computer system. This includes, but is not limited tokeyboards, mice, displays and printers. A card reader for a smart cardconnected through a USB-bus as described in the introduction would hencealso be represented schematically by a peripheral 500 connected throughthe bus 400 in FIG. 1.

One basic idea of the invention is to provide a low-power devicecontaining data and processes/functions that are kept isolated byhardware. The data and processes can be assigned any combination ofavailable integrity and confidentiality levels. Examples of data andprocesses fit for the low-power device include encryption keys at a highintegrity level and a high confidentiality level and kernel code at ahigh integrity level and low confidentiality level. However, an entireoperating environment running on a virtual machine may be assigned a lowintegrity level, meaning that it is not permitted to write anything tothe higher integrity levels of the low-power device. In principle, itcan still write to the low-power device, but only to restricted areaswith a similarly low integrity level.

In order to implement the necessary hardware and/or firmware for thelow-power device, one or more integrity levels to be implemented on thelow-power device must be determined. This would typically be the highestintegrity level available, and possibly a few more. For each integritylevel i, the various available confidentiality levels must bedetermined, thus making a set of pairs of integrity levels i andconfidentiality levels j to be implemented in the low-power-device. Foreach such pair {i, j}, two I/O functions must be considered in view orthe BLP and Biba rules discussed previously. Possible I/O-functions are:

-   -   READ(i, j) permitted to read information at or above integrity        level i AND at or below confidentiality level j; and    -   WRITE(i, j) permitted to write information to or below integrity        level i AND to or above confidentiality level j.

Thus, only the read and write functions compliant with the BLP and Bibamodels are provided. It should be understood that equivalent functionscontrolling the flow of information along security axes may be provided.For example, one function could control information flow, i.e. reads andwrites, along one security axis. Regardless of form, these I/O-functionsare advantageously provided in hardware, so that the functionsthemselves cannot be altered by software. These functions, for exampleone READ and one WRITE for each pair as described above, may be providedby the interface 120 or software depending on the requirementsassociated with levels i and j.

As indicated above, other security aspects like availability, furtherintegrity aspects etc. may be relevant. In general, n security aspectswill require n-tuples of every possible combination.

In order to implement secure functions in the interface unit, thefollowing general procedure would involve:

-   -   identifying a set of n security aspects, e.g. confidentiality,        integrity and/or availability aspects, each aspect being        independent of the other security aspects,    -   for each security aspect identifying one or more security levels        to be implemented on the low-power device,    -   for each security aspect determining if and how information        validly can be transported between security levels.

There are three possibilities:

-   -   1. Flow upwards as in the BLP model for a security aspect of a        confidentiality type,    -   2. Flow downwards as in the Biba model for a security aspect of        an integrity type,    -   3. No flow between security levels permitted.

The fourth theoretical alternative, flow permitted in both directionsalong a security axis, is equivalent to all information being on onesecurity level. To comply with the formal security models, informationmust not be transported from a higher to a lower level in a securityaspect of the confidentiality type and not from a lower to a higherlevel in a security aspect of the integrity type. In addition, the BLPand Biba rules for joins of information from different levels must beemployed accordingly.

This approach may quickly lead to a large number of separate functions.In the case of numerous security aspects it might be practical to run ageneric READ-function at the highest possible confidentiality level andlowest possible integrity level (so that it can read everything). Such atrusted READ would have to take the assigned levels of the securityaspects as argument, and implement the BLP and Biba-rules, preferably inhardware. A similar generic and trusted WRITE-function running at thelowest possible confidentiality levels and highest possible integritylevels could also be implemented.

In all cases, the read, write or flow functions and possibly functionsenforcing the rules for joins between information from different levelspreferably are implemented in the interface unit, which may be a part ofa circuit board which also includes the low-power device.

FIG. 2 shows an exemplary embodiment of the present invention. Trustedstartup software is stored in read only memory (ROM) 200. The startupsoftware may comprise a boot sequence for starting the entire system, ora startup routine for some secondary system that will be started laterduring initialization, for example basic routines for networking viaTCP/IP. In any case, a ROM cannot be written to from any software, sothe content within the ROM is tamperproof. In other words, storing somestartup routine in the ROM 200 guarantees the authenticity of thestartup routine, even if the system previously was infested withmalicious software. The instructions and data in ROM 200 are stored atthe highest integrity level, i.e. the most trusted level in a formalintegrity model, where it cannot be written to by processes at lowerintegrity levels.

A low level virtual machine layer 210 can be stored in a larger memoryarea, e.g. a 4 GB flash memory area, of the low power system. Duringstartup, the various components of the virtual machines can be verifiedby hashes or the like from ROM 200. The VM-machine layer may be assigneda lower integrity level than the contents of ROM 210. Because theVM-layer cannot write to the read only memory 200, writing from a lowerto a higher integrity level is prevented by an electronic impossibilityrather than by error-prone software. Thus, Biba's rule prohibitingwriting up is observed automatically. According to the Biba model,writing data from a higher to a lower level of integrity is allowed.Hence, keys, hashes, instructions and other data may be read from theROM 200 to verify startup of the virtual machine layer 210. Stillaccording to the Biba model, a combination of information from twointegrity levels shall be assigned the lower of the integrity levels.This means that the VM-layer when started keeps its integrity as long asit only receives data from its own or a higher integrity layer, e.g. ROM200.

If this VM-layer is stored in a low-power device away from a high powerPC 130, malicious software would have to pass the interface unit 120 inFIG. 1. Hence, if the interface unit 120 has no hardware orfunctionality for writing from the high-power system 130 to theVM-layer, the VM-layer is guaranteed to start from a certified andunaltered copy. This also means that any updates to the low-power devicemust be performed through a dedicated interface, for example a serialconnection directly to the low-power device and not through a connectionfrom the high-power system 130. This way, writes from a high powersystem 130 is impossible, and Biba's rule against writing up is oncemore observed. As Biba allows writing down, the virtual machines willstill be available for running software on lower integrity levels.Because updates to the low power device will be relatively infrequent,users of secure computer systems are believed to prefer this minorinconvenience to the uncertainty of possible software attacks that mighttarget a write function from the high power system 130 through theinterface 120.

It is noted that some implementations may lack an interface for hardwareprogramming, but simply provide a low-power device with preconfiguredhardware and firmware containing the required data and functions.

In FIG. 2, one or more virtual machines 220 may be assigned for runningapplication software on the low power device 110. This machine could,for example, run a web-browser and/or java-applications at a relativelyhigh (trusted) integrity level. A possible application could beautomatic secure transactions between computers having this knownintegrity level and a certificate to prove it. There are javaimplementations for single board computers that relatively easy might beadapted for this kind of applications.

Still referring to FIG. 2, the PC virtual machine layer provides avirtual machine, typically emulating the hardware of a typical PC. Thislayer runs on the high power system and typically provides (emulated)network interface card(s), printer(s), graphical processing unit(s) etc.in a manner known to those skilled in the art. An example of such aVM-layer is VM-ware™, although any virtual machine layer may beemployed. This software layer is run at a lower integrity level than thelow power device. Referring again to Biba's strict model of integrity,writing up to the low power device may be prevented by hardware in theinterface unit 120 that simply lacks the ability to write up along theintegrity axis, and/or by storing high-integrity data in a ROM, whichcannot be written to. The low power device may still provide a virtualmachine, or just data and/or instructions from ROM 200 to verify the PCVM-layer 230 in a secure manner as Biba allows writing information to alower level of integrity.

A PC OS layer 240 runs on the PC virtual machine (VM) layer. While asoftware attack on a physical PC cannot write to a physical ROM, thereis at least a theoretical possibility that an attack might target avirtual “ROM” emulated by software. Regardless if the VM softwareprovides write filtering up to emulated ROMs or not, a lack of writefunctions through the interface unit 120 would prevent writes to higherintegrity levels. More important, perhaps, is that hashes, keys etc. canbe fetched from ROM 200 to verify software at runtime using knowntechniques discussed in the introduction, thus ensuring integrity at thelevel provided by a physical machine. The PC OS layer may have severalinternal levels of integrity, at least in principle.

A PC application layer 250 contains applications run by a user. Thislayer may also have several internal integrity levels. Recalling thediscussion in the introduction, a trusted level of authentication mayrequire a key or certificate from a read only memory (ROM) 200 or asmart card, whereas a less trusted level might require a password only.Such different levels of authentication are known from e.g. governmentalsystems and banking applications, and are used to ensure that onlycertified users are allowed to perform certain actions. Similarly,different levels of authenticity can be employed to ensure thatnon-trusted code cannot write outside the sandpit in which it is run.

It is well known to those skilled in the art that some operating systemsand applications are more prone to software attacks and/or malware thanother systems and applications. This may, at least in part, stem fromnot observing formal integrity rules, for example by allowing an appletor other code write from within a runtime machine in a web browser to afile system or applications outside the web browser. With the currentinvention, it is possible to run even rogue web browsers in a low costvirtual machine with a known level of integrity. This means that even ifa web browser is suspected of allowing writes to a file system, suchwrites will be contained in an environment with untrusted contents, i.e.a low integrity level as defined above. Within this level, a user maydisable cumbersome “enhanced security” functions, and still bereasonably sure that any software run within this particular machinewill not be able to write to other virtual machines running at higherintegrity levels. Various filters to prevent or warn of phishing andother attacks directed to a user will still be required. Anti virussoftware may also be required on this virtual machine to help preventworms etc. from spreading from a totally uncontrolled machine connectedto the Internet. However, the protection against viruses, worms andother malware writing to business critical applications may be greatlyreduced by running such applications in a separate virtual machine at ahigher, that is, more trusted and trustworthy, integrity level.

A database 260 is used as an example of data at a higher integritylevel. According to Biba's strict policy of integrity, data should notbe written to the database from a lower integrity level, for example theuntrusted web browser environment described above. However, data maystill be validly received over the Internet from other applications runat the same or a higher integrity level. The appropriate keys and/orcertificates to ensure that data are not manipulated in transit can beretrieved from the ROM 200 as described above. Further, the machinerunning an insecure web browser and the virtual machine running the moretrusted database may derive their required authenticity from keys orcertificates stored in a physical ROM 200 on the low power device asdescribed above. By involving hardware this way, the system becomes morerobust than a purely software based system. The cost of a read onlymemory 200 will also be considerably less than equivalent functionalityimplemented in software, especially as the software must be certifiedmore thoroughly to verify that it complies with the Biba rules forintegrity. However, it should be kept in mind that other parts of thesoftware required to run a trusted application in a separate machine,e.g. verification by comparing a runtime hash with a stored hash, willbe similar in the two approaches.

According to Biba, writing down is allowed. In the example above, thismeans that data from a trusted database can be written to the virtualmachine running the web browser without violating Biba's rule forwriting. The combined information would acquire the lower integritylevel, i.e. it should be regarded as less trusted than the original datafrom the database running at a lower integrity level. However, suchwriting down should be discouraged, because it would lead to informationmigrating to the highest integrity level where it might be stuck:Writing it back is prevented, possibly by a mechanism involving hardwareas discussed above.

Bell-LaPadula rules may be implemented in hardware in much the same wayas Biba's rules for integrity. Data should be kept at the lowestpossible confidentiality level to prevent information from migrating tothe highest available level of confidentiality.

As noted above, different aspects of security, e.g. confidentiality,integrity and availability, are independent of each other. Thus, ifthere are two levels of integrity, e.g. {low, high) and two levels ofconfidentiality, e.g. {public, restricted} there could be four differentvirtual machines running {low, public}, {low, restricted}, {high,public] and {high, restricted} respectively.

Turning once more to FIG. 2, the user data layer 270 presents one ormore security levels, for example the four combinations above running onseparate virtual machines, on one display. This way, a user can viewdata from a trusted and trustworthy database on a high integrity levelwhile working in a less trusted environment on a lower level ofintegrity. If data from the lower and higher integrity layers are notmixed, there will be no combination of information that has to beassigned the higher level of integrity. Hence, the information will notmigrate to the highest level of integrity.

No system will be more secure than the user using it. A user can readfrom one window and type into another, possibly via a slip of paper ifthe systems are wide apart. This sets a limit to the effort that mayreasonably be put into an attempt to prevent copy and paste between twowindows on a computer screen. It also means that as little as possibleregarding security should be left to a user.

Referring now to FIG. 3, a schematic example of software applicationsthat might be run on the system is shown. Starting from the bottom, ahardware layer 310 represents the low-power device, high-power device,interface unit and other hardware from FIG. 1.

The layer 320 running directly over the hardware 310 may represent ahypervisor, e.g. the VM layer 210 and PC VM-layer 250 from FIG. 2, ahardware abstraction layer for a single operating system, or no softwareat all. The hypervisor 320 may provide several virtual machines 330, 333for running applications at different levels of confidentiality,integrity and availability. A virtual machine may thus use resourcesfrom the low power device, the high-power device or both. In FIG. 3,only one virtual machine is depicted in some detail. A typical virtualmachine has an operating system (OS) 330, which serves as a basis forall applications running on the system. Some applications 331, 332 mayaccess the OS 330 directly. Other applications may share a common set oflibraries and drivers 340, typically providing a file system, a filesystem browser, printing, networking and other functions that areimplemented once to be available in a number of applications 350-381,for example email 350 and email based services 351, browser/xml app 360with corresponding services 361, contact list and services 370, 371, IRSand IRS related services or social media 370, 371 etc. Some applications390, 391, e.g. java runtime environment 390 and applet 391, can berequired to run in a sandpit provided by the operating system, if suchfunctionality is provided by the OS. Not all virtual machines mayimplement all the functions shown in FIG. 3.

The hypervisor 320 may accommodate one or more additional virtualmachines, collectively indicated by the dotted box 333. One of thesemight, for example, be a separate machine running at a high level ofintegrity. In this context, it is irrelevant if it uses processing powerfrom the high-power device or, as discussed above, the low-power device.In either case, such a virtual machine might run, for example,accounting software and communicate with other computers at the sameintegrity level only. This could mean that any piece of information froma lower level of integrity would be rejected by the machine, and hencethat a user would be unable to use this particular machine for, e.g.,browsing the web. Because information with low integrity, i.e. anynon-authenticated web content, can be written to the higher integritylevel, attacking this particular machine with malware would be madedifficult, because the attacker must authenticate himself, typically bya certificate, and then provide data with an appropriate hash dependingon a valid key or certificate in order to write to the machine at all.As mentioned briefly in the introduction, algorithms for such purposes,e.g. streaming algorithms, exist. The present invention can support suchapplications by providing a platform with a known, traceable andverifiable integrity level. If desired, an entire stack from andincluding hardware isolated from other virtual machines can be providedby the present invention.

In practice, inexpensive disks and other hardware connected to ahigh-power device would be used as much as possible. The hypervisor 320might still be used to allocate security resources from the low powerdevice along with resources from the high-power device to virtualmachines running on the system.

Thus, for example, it may be possible to store, possibly encrypted andhashed, code on a hard disk connected to the high-power device, and useintegrity tested and decrypted code to boot a virtual machine running atthe high-power device along with a virtual machine running on the lowpower device as discussed in the description of FIG. 2. These machinesmay have similar or different levels of confidentiality, integrityand/or availability.

In some embodiments, the layer 320 might also be responsible forproviding copies of virtual machines for fast recovery. Thisfunctionality is provided by commercially available hypervisors, andwill not be described further here.

From FIG. 3, it should be understood that reads or writes initiated bysome user application, e.g. 351, are mapped through one or more softwarelayers, in this case layers 350, 340, 330 and 320 before they access thephysical disk, networking interface or other hardware at layer 310.Although the operating system 330 and hypervisor 320 may provide someprotection, they generally do not implement formal rules for integrityand confidentiality as discussed above. Hence, there is at least apossibility for circumventing security through software accessing disksand other hardware which is physically available through the hypervisor320 in FIG. 3. However, when secure hardware according to the inventionis provided by the low-power device and properly allocated to resourcesat the OS or application layer, possibly through a hypervisor 320 asshown in FIG. 3, resources can be run securely at different levels ofconfidentiality and integrity within the system. This includes start upwith no possibility for contamination during the boot-processes andprovision of storage at appropriate levels during operation.

It should be understood that hardware implemented secure I/O-functionsand storage can be allocated to entire virtual machines through ahypervisor 320, and/or to application software through an appropriateOS.

CONCLUDING REMARKS

From the above, it should be understood that any information, e.g. aunique ID and the keys, code and hashes discussed above, may be storedat an appropriate level, not necessarily at the highest possibleintegrity level. Further, some code may be stored at the level on whichit is to be run, while a hash of the code may be stored at a higherintegrity level. This ensures that the hash cannot be modified (bywriting up) and that it may still be available for comparison before thecode is allowed to run.

In the above discussion, several security aspects have been mentioned,while confidentiality and integrity (authenticity) has been used as mainexamples. However, it should be clearly understood that availability andother aspects may benefit from the present invention. For example,backups or older versions of certain virtual machines may be kept moreor less available for fast restore of data and functionality.Furthermore, some copies of virtual machines, backups and other data maybe encrypted and then provided with a hash according to theirconfidentiality and integrity levels and stored at less restrictivelevels, i.e. at less expensive storage. During restore, a hash can becomputed from the stored data and compared to a hash stored at thehigher integrity level where it originally belonged. If the hashes aredifferent, the restored information should be rejected from the higherintegrity level. Next, the data can only be decrypted by a process at anappropriate confidentiality level using a key from a confidentialmemory. The information is then only available when decrypted, i.e. atthe appropriate integrity level and at the appropriate confidentialitylevel. In these security related processes, the low-power device mayprovide storage for keys and hashes, and possibly for code, whereas thehigh-power device may provide inexpensive processing power and storage.

While the invention has been described with reference to specificembodiments, the invention is solely defined by the accompanying claims.

1. (canceled)
 2. A system comprising: a virtual machine engine forgenerating one or more virtual machines, each virtual machine beinggenerated having a virtual machine confidentiality level and a virtualmachine integrity level, the virtual machine confidentiality level beingselected from at least a higher confidentiality level and a lowerconfidentiality level, the virtual machine integrity level beingselected from at least a higher integrity level and a lower integritylevel, a first virtual machine with the higher confidentiality levelbeing configured to require a stronger confidentiality process than asecond virtual machine with the lower confidentiality level, a thirdvirtual machine with the higher integrity level being configured torequire a stronger integrity process than a fourth virtual machine withthe lower integrity level; a first program; a second program; a firstdatastore or data set associated with a first data confidentiality leveland a first data integrity level; a second datastore or data setassociated with a second data confidentiality level and a second dataintegrity level; at least one hardware processor configured to: receivea request to use the first program; execute a particular virtual machinewith a particular virtual machine confidentiality level and a particularvirtual machine integrity level; use a particular confidentialityprocess and a particular integrity process before or while operating thefirst program by the particular virtual machine, the particularconfidentiality process being associated with the particular virtualmachine confidentiality level, the particular integrity process beingassociated with the particular virtual machine integrity level; allowthe first program to read the first data set or from the firstdatastore, only if the first data confidentiality level of the firstdata set or the first datastore is equal to or lower than the particularvirtual machine confidentiality level, and only if the first dataintegrity level of the first data set or the first datastore is equal toor higher than the particular virtual machine integrity level.
 3. Thesystem of claim 2, wherein the stronger confidentiality process includesmore secure encryption.
 4. The system of claim 3, wherein the firstvirtual machine with the higher confidentiality level requiresencryption using a larger key length than the second virtual machinewith the lower confidentiality level.
 5. The system of claim 3, whereinthe first virtual machine with the higher confidentiality level requiresencryption, and the second virtual machine with the lowerconfidentiality level does not require encryption.
 6. The system ofclaim 3, wherein the first virtual machine with the higherconfidentiality level requires at least one additional level ofencryption over the second virtual machine with the lowerconfidentiality level.
 7. The system of claim 2, wherein the strongerintegrity process includes more secure authentication.
 8. The system ofclaim 7, wherein the third virtual machine with the higher integritylevel requires authentication using a certificate, and the fourthvirtual machine with the lower integrity level requires a password. 9.The system of claim 7, wherein the third virtual machine with the higherintegrity level requires authentication, and the fourth virtual machinewith the lower integrity level does not require authentication.
 10. Thesystem of claim 7, wherein the third virtual machine with the higherintegrity level requires using a hash, and the fourth virtual machinewith the lower integrity level does not require using a hash.
 11. Thesystem of claim 2, further comprising protected memory storing securitykeys, the protected memory having a protected memory confidentialitylevel and a protected memory integrity level; and wherein the firstvirtual machine with the higher confidentiality level requires a firstone of the security keys stored in the protected memory, and the thirdvirtual machine with the higher integrity level requires a second one ofthe security keys stored in the protected memory.
 12. The system ofclaim 11, wherein the protected memory is disposed on a first computingdevice, and the first program is controlled by a second computingdevice.
 13. The system of claim 12, wherein the protected memory isread-only memory.
 14. The system of claim 2, wherein the at least onehardware processor is further configured to: allow the first program toreceive data from the second program, only if a second virtual machineconfidentiality level associated with the second program is equal to orhigher than the particular virtual machine confidentiality level, andonly if a second virtual machine integrity level associated with thesecond program is equal to or lower than the particular virtual machineintegrity level; and allow the first program to provide data to thesecond program, only if the second virtual machine confidentiality levelassociated with the second program is equal to or higher than theparticular virtual machine confidentiality level, and only if the secondvirtual machine integrity level associated with the second program isequal to or lower than the particular virtual machine integrity level.15. The system of claim 2, wherein the particular virtual machineconfidentiality level and the particular virtual machine integrity levelare based on the first program.
 16. A method comprising: receiving arequest to use a first program; generating and executing a particularvirtual machine with a particular virtual machine confidentiality leveland a particular virtual machine integrity level, the particular virtualmachine confidentiality level being selected from at least a higherconfidentiality level and a lower confidentiality level, the particularvirtual machine integrity level being selected from at least a higherintegrity level and a lower integrity level, a first virtual machinewith the higher confidentiality level requiring a strongerconfidentiality process than a second virtual machine with the lowerconfidentiality level, a third virtual machine with the higher integritylevel requiring a stronger integrity process than a fourth virtualmachine with the lower integrity level; using a particularconfidentiality process and a particular integrity process before orwhile operating the first program by the particular virtual machine, theparticular confidentiality process being associated with the particularvirtual machine confidentiality level, the particular integrity processbeing associated with the particular virtual machine integrity level;and allowing the first program to read a first data set or from a firstdatastore, the first datastore or data set being associated with a firstdata confidentiality level and a first data integrity level, only if thefirst data confidentiality level is equal to or lower than theparticular virtual machine confidentiality level, and only if the firstdata integrity level is equal to or higher than the particular virtualmachine integrity level.
 17. The method of claim 16, wherein thestronger confidentiality process includes more secure encryption. 18.The method of claim 17, wherein the first virtual machine with thehigher confidentiality level requires encryption using a larger keylength than the second virtual machine with the lower confidentialitylevel.
 19. The method of claim 17, wherein the first virtual machinewith the higher confidentiality level requires encryption, and thesecond virtual machine with the lower confidentiality level does notrequire encryption.
 20. The method of claim 17, wherein the firstvirtual machine with the higher confidentiality level requires at leastone additional level of encryption over the second virtual machine withthe lower confidentiality level.
 21. The method of claim 16, wherein thestronger integrity process includes more secure authentication.
 22. Themethod of claim 21, wherein the third virtual machine with the higherintegrity level requires authentication using a certificate, and thefourth virtual machine with the lower integrity level requires apassword.
 23. The method of claim 21, wherein the third virtual machinewith the higher integrity level requires authentication, and the fourthvirtual machine with the lower integrity level does not requireauthentication.
 24. The method of claim 21, wherein the third virtualmachine with the higher integrity level requires using a hash, and thefourth virtual machine with the lower integrity level does not requireusing a hash.
 25. The method of claim 16, further comprising storingsecurity keys in protected memory, the protected memory having aprotected memory confidentiality level and a protected memory integritylevel; and wherein the first virtual machine with the higherconfidentiality level requires a first one of the security keys storedin the protected memory, and the third virtual machine with the higherintegrity level requires a second one of the security keys stored in theprotected memory.
 26. The method of claim 25, wherein the protectedmemory is disposed on a first computing device, and the first program iscontrolled by a second computing device.
 27. The method of claim 26,wherein the protected memory is read-only memory.
 28. The method ofclaim 16, further comprising: allowing the first program to receive datafrom a second program, the second program being associated with a secondvirtual machine having a second virtual machine confidentiality leveland a second virtual machine integrity level, only if the second virtualmachine confidentiality level associated with the second program isequal to or higher than the particular virtual machine confidentialitylevel, and only if the second virtual machine integrity level associatedwith the second program is equal to or lower than the particular virtualmachine integrity level; and allowing the first program to provide datato the second program, only if the second virtual machineconfidentiality level associated with the second program is equal to orhigher than the particular virtual machine confidentiality level, andonly if the second virtual machine integrity level associated with thesecond program is equal to or lower than the particular virtual machineintegrity level.
 29. The method of claim 16, wherein the particularvirtual machine confidentiality level and the particular virtual machineintegrity level are based on the first program.